Zapis na COM port
Otázka od: Petr Lupinek
3. 5. 2004 9:43
Zdravim,
prepisuji komunikacni rutinu z programu, ktery ovladal zarizeni pres COM
port. Byl napsany pro W98 a primo pristupoval k UARTu (8250), pro XP to
samozrejme nechodi.
Chci pouzit unitu SynaSer
v deklaraci je externi dll
function Inport(PortNum:word):word; stdcall; external 'ntport.dll';
procedure Outport(PortNum:word; Data:word); stdcall; external 'ntport.dll';
OutPort(BasePort + 4, 3) - nahradim ser.DTR a ser.RTS
Result:=(InPort(BasePort+6) and $10 ) - cteni CTS = ser.CTS
A nasleduje problem
OutPort(BasePort + 3, $40);
Delayms(20); //pockej 20 ms
OutPort(BasePort + 3,0);
Podle dokumentace je tento bit -> 0 = turn break off, 1 = force spacing
break state
vyrobi to (podle osciloskopu) 20ms impuls na TX.
Jde to nejak provest pomoci SynaSer? Nebo jakkoliv, aby to slo korektne po
XP.
Diky.
WinXP Prof SP1, D4 C/S Upd. #3,
S pozdravem
Ing. Petr Lupinek
datove komunikacni systemy
odbor Informatika
ALIACHEM a.s. o.z SYNTHESIA
tel.: 466825535
mob.: +420 736 505 512
Odpovedá: Erik Salaj, Winsoft
3. 5. 2004 10:05
> A nasleduje problem
>
> OutPort(BasePort + 3, $40);
> Delayms(20); //pockej 20 ms
> OutPort(BasePort + 3,0);
>
> Podle dokumentace je tento bit -> 0 = turn break off, 1 = force spacing
> break state
>
> vyrobi to (podle osciloskopu) 20ms impuls na TX.
Windows API pre seriovu komunikaciu priamo podporuje
break a nas ComPort komponent obsahuje k tomu metody
ClearBreak a SetBreak. Podobne to moze byt v SynaSer.
Problemom vo Windowse je dosiahnut presnu dlzku impulzu,
ale pokial tych 20ms je len minimalna hodnota a moze byt
aj vecsia tak staci pouzit Sleep.
Erik
Odpovedá: Lukas Gebauer
3. 5. 2004 10:34
> Chci pouzit unitu SynaSer
> A nasleduje problem
>
> OutPort(BasePort + 3, $40);
> Delayms(20); //pockej 20 ms
> OutPort(BasePort + 3,0);
>
> Jde to nejak provest pomoci SynaSer? Nebo jakkoliv, aby to slo
> korektne po XP.
ser.setbreak(20);
(ta hodnota 20 je tech tvych 20ms.)
--
Lukas Gebauer.
E-mail: gebauerl@mlp.cz
http://www.ararat.cz/synapse/ - Ararat Synapse - TCP/IP Lib.